// 导入配置的基地址
import {
	baseUrl
} from "@/utils/config.js"
//导入本地存储方法
import {
	getStorageToken,
	removeStorageToken
} from "@/utils/storage.js"

const timeout = 5000

const request = (config) => {
	// 每次请求都携带 token
	const token = getStorageToken();
	if (token) {
		config.header = config.header || {}
		config.header.satoken = token; // 参见后端API文档		
	}

	// 在发送请求之前做些什么
	uni.showLoading({
		title: '加载中...'
	});

	return new Promise((resolve, reject) => {
		uni.request({
			method: config.method || 'get',
			timeout: config.timeout || timeout,
			url: baseUrl + config.url,
			data: config.data,
			header: config.header,
			success: (result) => {
				uni.hideLoading();
				// 检查HTTP响应状态
				if (result.statusCode !== 200) {
					uni.showModal({
						title: '网络错误',
						content: `HTTP状态码: ${result.statusCode}`,
						showCancel: false
					});
					return reject(new Error(`网络错误: ${result.statusCode}`));
				}
				
				// 检查响应数据是否存在
				if (!result.data) {
					uni.showModal({
						title: '数据错误',
						content: '服务器未返回有效数据',
						showCancel: false
					});
					return reject(new Error('服务器未返回有效数据'));
				}
				
				resolve(result.data);
			},
			fail: (error) => {
				uni.hideLoading();
				uni.showModal({
					title: '请求失败',
					content: error.errMsg || '网络请求失败',
					showCancel: false
				});
				reject(new Error(error.errMsg || '网络请求失败'));
			}
		})
	})
}
export default request